package com.qianxun.plugins.log;

import lombok.Data;
import lombok.experimental.Accessors;

import java.util.List;
import java.util.Map;

/**
 * 日志信息对象
 * @author: huwei
 * @date: 2019/10/17 13:44
 * @version: 1.0.0
 */
@Data
@Accessors(chain = true)
public  class LogInfo{
    /**
     * 方法依赖的类的完整类路径名称
     */
    private String className;
    /**
     * 方法依赖的类的简单类名称
     */
    private String simpleClassName;
    /**
     * 方法名称
     */
    private String methodName;
    /**
     * 方法的完成签名
     */
    private String methodSignature;
    /**
     * 方法参数的map映射表，映射规则是参数名称到参数值的映射(pName->pValue)；
     * 使用该字段取值时，需要注意的是：当目标参数没有使用@Param注解时，目标参数的名称有可能获取不到，则该字段始终为空的map列表；此时，只能使用parameterArray取值
     */
    private Map<String ,Object> parameterMap;
    /**
     * 方法参数的List列表
     */
    private List<Object> parameterArray;
    /**
     * 方法的返回结果
     */
    private Object result;
    /**
     * 方法执行状态，true成功；false失败，当且仅当方法执行抛出异常时，该参数为false；默认为true
     */
    private boolean status = true;
    /**
     * 方法执行失败时所抛出的异常信息
     */
    private Throwable cause;
    /**
     * 定义在LogPoint注解上的Key标识，该值已被动态参数注入
     */
    private String key;
    /**
     * 定义在LogPoint注解上的sign标识，该值已被动态参数注入
     */
    private String[] sign;
    /**
     * 定义在LogPoint注解上的title标识，该值以被动态参数注入
     */
    private String title;
    /**
     * 定义在LogPoint注解上的notes标识，该值以被动态参数注入
     */
    private String notes;
    /**
     * log切入点
     */
    private LogPoint logPoint;
}
